package cn.iocoder.yudao.module.digital.api.cardkeymanager;

import cn.iocoder.yudao.module.digital.api.cardkeymanager.dto.CardKeySecretDTO;

import java.util.List;

/**
 * Description: 卡密管理
 * Author: li
 * Date: 2024/2/22
 */
public interface ICardKeyManagerApi {

    /**
     * 通过客服领取卡密
     *
     * @param orderNo 订单流水号
     * @param secret  密钥
     */
    List<CardKeySecretDTO> claimCardKeySecretByCustomerService(String orderNo, String secret);

    /**
     * 领取卡密
     *
     * @param orderNo         订单流水号
     * @param skuId           sku的id
     * @param skuNum          sku的数量
     * @param buyDenomination 当允许用户自定义面值时，用户实际输入的面额（单位：分）
     * @return
     */
    void claimCardKeySecret(String orderNo, Long skuId, int skuNum, Integer buyDenomination);


    /**
     * 获取订单卡密
     * @param userId 用户id
     * @param orderNo 订单号
     * @return 卡密
     */
    List<CardKeySecretDTO> getCardkeySecretByOrderNo(Long userId, String orderNo);

    /**
     * 通过卡密获取订单号
     * @param cardKeySecret
     * @return 订单号
     */
    List<String> getOrderNoByCardKeySecret(String cardKeySecret);

}
